<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="../js/vue.js"></script>
    <title>Document</title>
</head>

<body>
    <div id="root">
        <h2>人员列表</h2>
        <input type="text" placeholder="请输入名字" v-model="keyWord">
        <button @click="sortType='1'">名字升序</button>
        <button @click="sortType='2'">名字降序</button>
        <button @click="sortType=''">原顺序</button>
        <ul>
            <li v-for="(item,index) in computePersons" :key="item.id">{{item.name}}-{{item.age}}-{{item.sex}} </li>
        </ul>
    </div>
    <script>
        Vue.config.productionTip = false; //以阻止vue在启动时生成生产提示
        new Vue({
            el: "#root",
            data: {
                keyWord: "",
                persons: [{
                        id: "001",
                        name: "马冬梅",
                        age: 18,
                        sex: '女'
                    },
                    {
                        id: "002",
                        name: "周冬雨",
                        age: 19,
                        sex: '女'
                    },
                    {
                        id: "003",
                        name: "周杰伦",
                        age: 21,
                        sex: '男'
                    },
                    {
                        id: "004",
                        name: "温兆伦",
                        age: 20,
                        sex: '男'
                    },
                ],
                filterPersons: [],
                sortType: ""
            },
            computed: {
                // 列表过滤
                computePersons() {
                    let arr = this.filterPersons = this.persons.filter((p) => { //filter返回的是原数组
                        return p.name.indexOf(this.keyWord) != -1 //return 后边是条件,符合则返回,不符合则不返回
                    })
                    // 需要排序
                    if (this.sortType) {
                        arr.sort((a, b) => { //return前-后为升序,后-前为降序
                            return this.sortType == "1" ? a.age - b.age : b.age - a.age
                        })
                    }
                    return arr
                },

            },
            methods: {
                // 思路错了,我们总想着过滤和点击事件分开,点击事件写,但是我们分开的话如果是升序降序可以,但是怎么还原原顺序呢,再根据现有条件筛选一次?太麻烦了

                // 一定要记住计算属性中,只要有一个变化就要重新计算,也就是我们改sortType,就要自动计算然后重新筛选再然后判断为空不排序不就完了嘛
                // sortName(type) {
                //     if (type="0") {
                //        筛选
                //     }
                //     if (type="1") {
                //        排序为升序
                //     }

                //     if (type = "2") {
                //       排序为降序
                //      }
                // }
            }

        })
    </script>

</body>

</html>